#ifndef GY_GroupControl_H
#define GY_GroupControl_H

#include "GY_ControlLibrary_global.h"
#include <QPair>
#include <QMap>
#include <QVariant>
#include <QByteArray>

typedef QPair<QObject*, const char*> Hander; //对象及调用函数名

class GY_CONTROLLIBRARY_EXPORT GY_GroupControl
{
public:
    GY_GroupControl();
    /**
     * @brief addGroupMember 添加组成员
     * @param groupId 组号
     * @param pReceiver 对象
     * @param pMethodName 调用函数
     */
    static void addGroupMember(const QVariant &groupId, QObject* pReceiver, const char* pMethodName);
    /**
     * @brief removeGroupMember 移除监听对象
     * @param pReceiver 对象
     */
    static void removeGroupMember(QObject* pReceiver);
    /**
     * @brief emitEvent 响应事件
     * @param groupId 组号
     */
    static void emitEvent(const QVariant &groupId, QObject* pReceiver);

private:
    static QMap<QVariant, QList<Hander>> m_groupIdMap; //记录组号和对象合集
};

#endif // GY_GroupControl_H
